package com.yoshino.mediator;

import java.util.HashMap;

/**
 * @author yoshino
 **/
public class ConcreteMediator extends Mediator {
    private HashMap<String, Colleague> colleagueMap;
    private HashMap<String, String> interMap;

    public ConcreteMediator() {
        this.colleagueMap = new HashMap<>();
        this.interMap = new HashMap<>();
    }

    @Override
    public void Register(String colleagueName, Colleague colleague) {
        colleagueMap.put(colleagueName, colleague);
        if (colleague instanceof Alarm) {
            interMap.put("Alarm", colleagueName);
        } else if (colleague instanceof Curtains) {
            interMap.put("Curtains", colleagueName);
        } else if (colleague instanceof CoffeeMachine) {
            interMap.put("CoffeeMachine", colleagueName);
        } else if (colleague instanceof TV) {
            interMap.put("TV", colleagueName);
        }
    }

    // 具体中介者的核心方法
    // 1.根据得到消息，完成对应任务
    // 2.中介者在这个方法，协调各个具体的同事对象，完成任务
    @Override
    public void GetMessage(int stateChange, String colleague) {
        Colleague Obj = colleagueMap.get(colleague);
        if (Obj instanceof Alarm) {
            if (stateChange == 0) {
                ((CoffeeMachine) colleagueMap.get(interMap.get("CoffeeMachine"))).StartCoffee();
                ((TV) colleagueMap.get(interMap.get("TV"))).StartTv();
            } else if (stateChange == 1) {
                ((TV) colleagueMap.get(interMap.get("TV"))).StopTv();
            }
        } else if (Obj instanceof CoffeeMachine) {
            ((Curtains) colleagueMap.get(interMap.get("Curtains"))).UpCurtains();
        } else if (Obj instanceof TV) {

        } else if (Obj instanceof Curtains) {

        }
    }

    @Override
    public void SendMessage() {

    }
}
